package org.ovirt.engine.core.utils;
public class CommandParametersInitializer implements Cloneable {
public java.util.HashMap<java.lang.Class, java.util.LinkedList<String>> mParameters =
new java.util.HashMap<java.lang.Class, java.util.LinkedList<String>>();
public final void AddParameter(java.lang.Class type, String parameterName) {
java.util.LinkedList<String> values = null;
if (!((values = mParameters.get(type)) != null)) {
values = new java.util.LinkedList<String>();
mParameters.put(type, values);
}
if (!values.contains(parameterName)) {
values.offer(parameterName);
}
}
public final void AddParameters(java.lang.Class type, Iterable<String> parameterNames) {
java.util.LinkedList<String> values = null;
if (!((values = mParameters.get(type)) != null)) {
values = new java.util.LinkedList<String>();
mParameters.put(type, values);
}
for (String param : parameterNames) {
values.offer(param);
}
}
public final void InitializeParameter(Object obj, Object value) {
java.lang.Class type = obj.getClass();
java.util.LinkedList<String> values = null;
if ((values = mParameters.get(value.getClass())) != null && values.size() != 0) {
try {
String paramName = values.poll();
java.lang.reflect.Field field = type.getField(paramName);
if (field != null) {
try {
field.set(obj, value);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
} catch (Exception e) {
throw new VdcException(e);
}
}
}
public final Object clone() {
CommandParametersInitializer newInstance = new CommandParametersInitializer();
for (java.lang.Class type : mParameters.keySet()) {
java.util.LinkedList<String> values = mParameters.get(type);
newInstance.AddParameters(type, values);
}
return newInstance;
}
}